From 84daf5fe4f55e78b2bbc44ea81998ae749b02a0b Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Thu, 4 Oct 2007 09:36:18 +0100 Subject: [PATCH] svm: Enable nested paging only on x86/64. Signed-off-by: Keir Fraser --- xen/arch/x86/hvm/svm/svm.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c index d6dd66192f..a679593d0d 100644 --- a/xen/arch/x86/hvm/svm/svm.c +++ b/xen/arch/x86/hvm/svm/svm.c @@ -885,16 +885,6 @@ static struct hvm_function_table svm_function_table = { .event_pending = svm_event_pending }; -static int svm_npt_detect(void) -{ - u32 eax, ebx, ecx, edx; - - /* Check CPUID for nested paging support. */ - cpuid(0x8000000A, &eax, &ebx, &ecx, &edx); - - return (edx & 1); -} - int start_svm(struct cpuinfo_x86 *c) { u32 eax, ecx, edx; @@ -937,7 +927,14 @@ int start_svm(struct cpuinfo_x86 *c) setup_vmcb_dump(); - svm_function_table.hap_supported = svm_npt_detect(); +#ifdef __x86_64__ + /* + * Check CPUID for nested paging support. We support NPT only on 64-bit + * hosts since the phys-to-machine table is in host format. Hence 32-bit + * Xen could only support guests using NPT with up to a 4GB memory map. + */ + svm_function_table.hap_supported = (cpuid_edx(0x8000000A) & 1); +#endif hvm_enable(&svm_function_table); -- 2.30.2